package com.atguigu.lease.common.login;

/**
 * 登录用户信息持有者类
 * 使用ThreadLocal来存储当前线程的登录用户信息，确保线程安全
 */
public class LoginUserHolder {
    // 使用ThreadLocal存储登录用户信息，每个线程独立存储，互不干扰
    public static ThreadLocal<LoginUser> threadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的登录用户信息
     * @param loginUser 登录用户对象
     */
    public static void setLoginUser(LoginUser loginUser) {
        threadLocal.set(loginUser);
    }

    /**
     * 获取当前线程的登录用户信息
     * @return 返回当前线程的登录用户对象，如果未设置则返回null
     */
    public static LoginUser getLoginUser() {
        return threadLocal.get();
    }

    /**
     * 清除当前线程的登录用户信息
     * 通常在请求处理完成后调用，防止内存泄漏
     */
    public static void clear() {
        threadLocal.remove();
    }
}